lexer grammar AnalisisLexer;


options {
  language = Java;
}

@header{
  package practicaspl.doceuno;
}

@members{
  private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
  public ArrayList<RecognitionException> getErrors() {
    return errors;
  }
  @Override
  public void reportError (RecognitionException e) {
     String msg = getErrorMessage(e, getTokenNames());
     System.err.println(msg);
     errors.add(e);
  }
} 
 
 
SEMICOLON : ';'; 
COLON : '.';
COMA : ','; 
 
MAS : '+';
MENOS : '-';
MULT :  '*'; 
DIV : '/';

O_PAR : '(';
C_PAR: ')';

O_CORCHETE: '[';
C_CORCHETE: ']';

MENOR : '<';
MAYOR : '>';
IGUAL : '=';

NUMERO : DIGITO*;
REAL : NUMERO COLON NUMERO;
 
fragment DIGITO :  '0' .. '9';

IDENT : CARACTER (CARACTER|DIGITO)*;
fragment CARACTER : 'a'..'z' | 'A'..'Z';

fragment NUEVA_LINEA: '\r\n' ;
STRING :'"'(options {greedy=false;}: .)* '"';
TABULADOR: '\t';
BLANCO: (' '|TABULADOR|NUEVA_LINEA) {skip();};

COMENTARIO : ('/*' ( options {greedy=false;} : . )* '*/'){ $channel=HIDDEN; };
  



